/*
ID: icerupt1
PROG: kimbits
LANG: C++11
*/

/* solution
 *
 * good problem. 一个数位dp题，不知道我设计的状态是不是最简单的。
 * 推出个数，然后利用个数再求出第m个的串。
 *
*/
#include <fstream>
#include <iostream>
#include <stack>

std::ifstream fin {"kimbits.in" };
std::ofstream fout{"kimbits.out"};

int const maxn = 33;
long long f[maxn][maxn];
long long g[maxn][maxn];
long long n, l, m;

int main()
{
	fin >> n >> l >> m;

	f[1][1] = 1;
	for (int i = 2; i <= n; i++) {
		f[i][1] = 1;
		for (int j = 2; j <= l; j++) {
			f[i][j] = f[i][j-1];
			for (int k = i-1; k >= j-1; k--)
				f[i][j] += f[k][j-1] - f[k][j-2];
		}
	}

	for (int i = 0; i <= l; i++) g[1][i] = 1;
	for (int i = 2; i <= n; i++) {
		g[i][0] = 1;
		for (int j = 1; j <= l; j++) {
			g[i][j] = g[i][j-1];
			for (int k = i-1; k >= j; k--)
				g[i][j] += f[k][j] - f[k][j-1];
		}
	}

	/*
	std::cout << "f:\n";
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= l; j++)
			std::cout << f[i][j] << ' ';
		std::cout << '\n';
	}
	std::cout << '\n';
	std::cout << "g:\n";
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= l; j++)
			std::cout << g[i][j] << ' ';
		std::cout << '\n';
	}
	std::cout << '\n';
	*/

	int one = l;
	for (int i = 0; i < n; i++) {
		if (g[n-i][one] < m) {
			std::cout << '1';
			fout << '1';
			m -= g[n-i][one--];
		} else {
			std::cout << '0';
			fout << '0';
		}
	}
	std::cout << '\n';
	fout << '\n';
}

